package com.itheima.reggie.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.itheima.reggie.entity.Employee;
import com.itheima.reggie.mapper.EmployeeMapper;
import com.itheima.reggie.service.EmployeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.DigestUtils;

@Transactional
@Service
public class EmployeeServiceImpl  implements EmployeeService {
    
    
    //注入mapper对象
    @Autowired
    private EmployeeMapper mapper;
    
    
    
    /**
     * 员工登录
     * 1. 登录其实就是拿着账号和密码去查询数据库，看看有没有这个人存在
     * 2. 但是仅仅返回一个有或者是没有，是不够的，因为员工登录完毕之后，后续的一切操作都无法跟踪了。
     * 3. 所以既然登录是查询操作，那不如把这个人的所有详细信息给查询出来。
     * 4. 后续把这个员工的信息给保存到session作用域里面，这样就能跟踪这个员工的操作了。
     *
     * @param employee
     * @return
     */
    @Override
    public Employee login(Employee employee) {
        
        //1. 构建查询条件对象
        LambdaQueryWrapper<Employee> lqw = new LambdaQueryWrapper<>();
        //1.1 设置按照用户名和密码来查询
        lqw.eq(Employee::getUsername , employee.getUsername());
        
        //对密码进行加密
        String md5Password = DigestUtils.md5DigestAsHex(employee.getPassword().getBytes());
        
        lqw.eq(Employee::getPassword , md5Password);
        
        //2. 执行查询操作 因为按照用户名和密码来查询，只会查询到一个用户，所以这里使用selectOne方法
        return mapper.selectOne(lqw);
    }
}
